package br.gov.ibama.client.visao.cargaPatrimonialHist;


import java.util.ArrayList;
import java.util.List;

import br.gov.ibama.client.componentes.BasisComponentes;
import br.gov.ibama.client.componentes.PopUpBasis;
import br.gov.ibama.client.constantes.ConstantesDS;
import br.gov.ibama.client.constantes.ConstantesFields;
import br.gov.ibama.client.visao.VisaoIndice;

import com.smartgwt.client.data.Criteria;
import com.smartgwt.client.data.DSCallback;
import com.smartgwt.client.data.DSRequest;
import com.smartgwt.client.data.DSResponse;
import com.smartgwt.client.data.DataSource;
import com.smartgwt.client.data.Record;
import com.smartgwt.client.util.BooleanCallback;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.grid.ListGridField;
import com.smartgwt.client.widgets.grid.events.CellClickEvent;
import com.smartgwt.client.widgets.grid.events.CellClickHandler;
import com.smartgwt.client.widgets.grid.events.CellDoubleClickEvent;
import com.smartgwt.client.widgets.grid.events.CellDoubleClickHandler;

public class VisaoCargaPatrimonialHist extends VisaoIndice{
	public VisaoPopupCargaPatrimonialHist popup;
	public int idLinhaSelecionada;
	private List<ImgButton> listaBotoes;
	private static final String BTN_NAME_NOVO = "Novo Item";
	private static final String BTN_NAME_EDITAR = "Editar Item";
	private static final String BTN_NAME_EXCLUIR = "Excluir Item";
	
	public int getLinhaSelecionada(){
		return idLinhaSelecionada;
	}

	public void setIdLinhaSelecionada(int idLinhaSelecionada){
		this.idLinhaSelecionada = idLinhaSelecionada;
	}

	@Override
	protected DataSource getDataSource() {
		return DataSource.get(ConstantesDS.DS_CARGA_PATRIMONIAL_HIST);
	}

	@Override
	protected List<ImgButton> getBotoes() {
		listaBotoes = new ArrayList<ImgButton>();
		listaBotoes.add(getBotaoNovo());
		listaBotoes.add(getBotaoEditar());
		listaBotoes.add(getBotaoExcluir());
		return listaBotoes;
	}

	@Override
	protected List<ListGridField> getCamposDaGrade(){
		List<ListGridField> listaCampos = new ArrayList<ListGridField>();
		
		ListGridField codigo = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID);
		codigo.setWidth(60);
		listaCampos.add(codigo); 
		
		ListGridField data = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_DATA);
		data.setWidth(50);
		listaCampos.add(data);
		
		ListGridField solicitante = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_SOLICITANTE);
		solicitante.setWidth(100);
		listaCampos.add(solicitante);
        
		ListGridField destinatario = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_DESTINATARIO);
		destinatario.setWidth(100);
		listaCampos.add(destinatario);
		
		ListGridField patrimonio = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_PATRIMONIO);
		patrimonio.setWidth(60);
		listaCampos.add(patrimonio);
		
		ListGridField localidade = BasisComponentes.criaListGridField(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_LOCALIDADE);
		localidade.setOptionDataSource(DataSource.get(ConstantesDS.DS_LOCALIDADE));
		localidade.setDisplayField(ConstantesFields.FIELD_LOCALIDADE_DESCRICAO);
		localidade.setValueField(ConstantesFields.FIELD_LOCALIDADE_ID);
		localidade.setWidth(200);
		listaCampos.add(localidade);
		
		return listaCampos;
	}

	private ImgButton getBotaoNovo(){
		ImgButton btnNovo = BasisComponentes.criaImgButton(BTN_NAME_NOVO, "adiciona_48x48.png");
		btnNovo.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				VisaoPopupCargaPatrimonialHist p = new VisaoPopupCargaPatrimonialHist("Novo Cadastro",PopUpBasis.ESTADO_SALVAR);
				p.redefinirTamanhoJanelaPopUp("300", "550", "10", "10");
				p.show();
			}
		});
		
		
		return btnNovo;
	}
	
	private ImgButton getBotaoEditar(){
		ImgButton btnEditar = BasisComponentes.criaImgButton(BTN_NAME_EDITAR, "editar_48x48.png");
		btnEditar.setDisabled(true);
		
		btnEditar.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				popup = new VisaoPopupCargaPatrimonialHist("Editar Cidade", PopUpBasis.ESTADO_EDITAR);
				popup.getFormulario().fetchData(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID, idLinhaSelecionada);
				popup.redefinirTamanhoJanelaPopUp("140", "550", "10", "10");
				popup.show();
			}
		});
		
		return btnEditar;
	}
		
	private ImgButton getBotaoExcluir(){
		ImgButton btnExcluir = BasisComponentes.criaImgButton(BTN_NAME_EXCLUIR, "excluir_48x48.png");
		btnExcluir.setDisabled(true);
		
		btnExcluir.addClickHandler(new ClickHandler() {
			
			@Override
			public void onClick(ClickEvent event) {
				SC.confirm("Deseja realmente excluir este item?", new BooleanCallback() {
					
					@Override
					public void execute(Boolean confirmou) {
						if (confirmou) {
							Criteria criteria = new Criteria(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID, idLinhaSelecionada +"");
							DataSource.get(ConstantesDS.DS_CARGA_PATRIMONIAL_HIST).fetchData(criteria,new DSCallback() {
								
								@Override
								public void execute(DSResponse response, Object rawData, DSRequest request) {
									Record[] resultado = response.getData();
									if (resultado != null && resultado.length > 0) {
										DataSource.get(ConstantesDS.DS_CARGA_PATRIMONIAL_HIST).removeData(resultado[0]);
									}
								}
							});
						}						
					}
				});
			}
		});
		
		return btnExcluir;
	}
	
	@Override
	protected void setClickHandlerGrid() {
		getGradePrincipal().addCellDoubleClickHandler(
				new CellDoubleClickHandler() {
					
					@Override
					public void onCellDoubleClick(CellDoubleClickEvent event) {
						int id = Integer.parseInt(event.getRecord()
								.getAttribute(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID));
						popup = new VisaoPopupCargaPatrimonialHist("Alterar");
						popup.getFormulario().fetchData(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID, id);
						popup.show();
						
					}
				});
		
		getGradePrincipal().addCellClickHandler(new CellClickHandler() {
			
			@Override
			public void onCellClick(CellClickEvent event) {
				idLinhaSelecionada = Integer.parseInt(event.getRecord()
						.getAttribute(ConstantesFields.FIELD_CARGA_PATRIMONIAL_HIST_ID));
				
				if (getGradePrincipal().anySelected()){
					int x = 0;
					for (x = 0; x < listaBotoes.size(); x++){
						listaBotoes.get(x).setDisabled(false);
					}
				}
			}
		});
		
	}
	
	
		
	}